#ifndef __MYSQLCLIENT_H__
#define __MYSQLCLIENT_H__

#include "NonCopyable.h"
#include <string>
#include <vector>
#include <mysql/mysql.h>

using std::string;
using std::vector;
namespace myNameSpace {
class MySQLClient: NonCopyable {
public:
    MySQLClient();
    ~MySQLClient();

    bool connect(const string &host, const string &user, const string &password, const string &database, unsigned short port);

    bool writeOperationQuery(const string &sql);
    vector<vector<string>> readOperationQuery(const string &sql);

    bool isExist(const string &tableName, const string &keyField, const string &key);

    bool appendData(const string &tableName,
                       const string &dataFiled,
                       const string &data,
                       const string &keyFiled,
                       const string &key);
     // 该函数用于向表tableName中，keyFiled=key的这一行，dataFiled列，添加数据data
     // 如果data和key在原来的SQL语法中是字符类型，需要手动在其前后添加
     // 即实际传入 "'" + data + "'"

    string findData(const string &tableName,
                    const string &dataFiled,
                    const string &keyFiled,
                    const string &key);
    // 该函数用于在表tableName中，keyFiled=key的这一行，查询其dataFiled列
    // 如果key在原来的SQL语法中是字符类型，需要手动在其前后添加
    // 即实际传入 "'" + data + "'"
    static void dump(const vector<vector<string>> &res);
    //用于打印一个返回结果，测试用

private:
    void init();

private:
    MYSQL _mysqlConnection;
};
} // end of namespace myNameSpace

#endif
